<!-- 
  菜单权限控制
     1. 登录得到当前用户的权限数据 menus
     2. 以menus为主对本地前端存储的所有动态路由表(数组) 进行筛选 得到当前用户有权限访问的所有动态路由表
     3. 把动态路由表添加到路由系统(addRoutes([{},{}])) 
        注意：所谓的路由系统其实就是指包含了所有的path和组件的对应关系 我们可以通过url输入path
        会自动找到对应的组件进行渲染
     
     4. 根据动态路由表显示左侧的菜单
        1. 定位到左侧菜单依赖的数据 options (不是响应式 只和初始化的时候传入的路由数据有关)
        2. 问题关键 我们需要使用响应式的数据 去作为视图的渲染依赖
        3. vuex 响应式数据 + 多模块共享 + 操作起来方便
        5. 把筛选过后的当前用户可以有权限访问的动态路由表和静态做组合 然后作为渲染左侧菜单的数据依赖
            state.menuList = [...constantRoutes, ...filterAsyncRoutes]

  按钮权限控制
     1. 登录得到当前用户可以访问的所有的按钮权限数据 points:['CKGZ']
     2. 封装全局指令 在指令的回调中拿到当前绑定button真实dom元素和当前button唯一的标识
        在里面我们通过判断当前按钮的标识能否在points找到  如果能找到就正常显示 
        如果找不到就隐藏

  首页注意点
     1. 图表类/地图类  一般都会涉及到挂载到dom元素
        初始化  1. 封装一个单独的函数 在函数中进行初始化代码的编写
               2.  在mouted中执行一下这个单独的函数

      

  响应式和双向绑定
   1. 数据响应式  
      数据变化之后自动可以进行后续操作(自动)
      数据变了 -> 感知到数据变了 -> 更新视图 / 发送一个ajax / 数据处理
      watch:{
        name:function(){
          // 想做啥就做啥 
        }
      } 

  2. 双向绑定
     数据和视图之间相互作用相互影响的关系
     M -> V    描述的是数据响应式中 数据变化之后 后续操作是视图更新
     V -> M    基于事件监听 拿到当前视图中最新的状态值 反向赋值给绑定的数据
               v-model input   v-model 组件
 -->